实训三 队列的操作
一、实训目的
1. 掌握队列的思想及其存储实现。
2. 掌握队列的常见算法的程序实现。
二、考核办法
必做题部分全做得3分,选做题部分满分2分,至少选一题。
三、实训内容
1.必做内容:(满分3分)
1.采用链式存储实现队列的初始化、入队、出队操作。
2.结构体部分代码:
typedef struct node
{
int data;
struct node *next;
}QNode;链队列节点定义
typedef struct
{
QNode *front,*rear;
}LQueue;//队列的定义
LQueue *Init_LQueue()
{
LQueue *q;
QNode *p;
q=malloc(sizeof(LQueue));
p=malloc(sizeof(QNode));
p->next=NULL;
q->front=p;
q->rear=p;
return q;
}//初始化队列
函数(a):
void In_LQueue(LQueue *q,int x)//入队操作
{…}
函数(b):
int Out_LQueue(LQueue *q,int x)//出队列操作
{…}
3.要求:(1)完成函数(a),函数(b)中的算法;
(2)编写 main()函数,并调用上述两个函数,输出结果。输入1,2,3,4,5,完成入队操作并显示在屏幕上.
(3)调用函数(b)将队列中元素出队,并输出到屏幕上
结果如图:

2. 选做内容:(满分2分)
1. 采用顺序存储实现队列的初始化、入栈、出栈操作。
2. 假设以数组sequ[0..m-1]存放循环队列的元素,同时设变量rear和qurlrn分别指示循环队列尾元素的位置和内含元素的个数,试写出循环队列的队满条件,并设计相应入队列和出队列的算法。
|